<?php
/**
 * Validierungsklasse zur Parametervalidierung
 *
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2013 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 *
 * Erkennt folgende Pattern:
 * 2001:0db8:85a3:08d3:1319:8a2e:0370:255
 * 2001:0db8:0:0:0:0:1428:57ab
 * 2001:db8::1428:57ab
 * 2001:db8:0:0:8d3::
 * 2001:db8::8d3:0:0:0
 * ::ffff:127.0.0.1
 * ::ffff:7f00:1
 * 2001:0db8:1234:0000:0000:0000:0000:0000
 * 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff
 *
 * @TODO: Analysierung muesste jedoch noch verbessert werden
 *
 * */


/**
 * $val muss einer IPv4-Adresse entsprechen
 * */
Class Yapary_Parameter_CheckIPv6 Extends Yapary_Exception_Error Implements Yapary_Parameter_ICheck
{
	function __construct ( )
	{

	}


	public function typedef ( $val )
	{
		return (string) $val;
	}


	public function getPattern ()
	{
		return '/^(\:\:)?([0-9A-Z]{1,4}(\:\:?|\.)){,7}([0-9A-Z]{1,4})?$';
	}


	public function isValid ( $val )
	{
		if (!isset($val)) {
			$this->addError(Yapary_Exception_Error::E_UNDEFINED);
			return false;
		}
		if (!preg_match('/'.$this->getPattern().'/i', $val)) {
			$this->addError(Yapary_Exception_Error::E_WRONG_FORMAT);
			return false;
		}

		return true;
	}
}
